/* Copyright 2018 JDCLOUD.COM

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http:#www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

容器镜像仓库
容器镜像仓库服务

OpenAPI spec version: v1
Contact: 

NOTE: This class is auto generated by the jdcloud code generator program.
*/


#ifndef ContainerregistryClient_h
#define ContainerregistryClient_h


#import <JDCloudOCSDKCore/JDCloudOCSDKCore.h>
#import <JDCloudOCSDKContainerregistry/ContainerregistryApiModel.h>

@interface ContainerregistryClient : NSObject<JDCloudClient>{
    @private
    NSString* _userAgent;
    NSString* _serviceName;
    NSString* _version;
    }

    @property (strong,readonly,nonatomic) NSString* userAgent;

    @property (strong,readonly,nonatomic) NSString* serviceName;

    @property (strong,readonly,nonatomic) NSString* version;

    @property (strong,nonatomic) NSString* contentType;

    @property (strong,nonatomic) Credential* credential;

    @property (strong,nonatomic) SDKEnvironment* sdkEnvironment;

    @property (strong,nonatomic) NSMutableDictionary* customHeader;

    @property  (strong,nonatomic) NSString* httpRequestProtocol;

    -(void) addCustomerHeaderWithKey:(NSString*) key
    value:(NSString*) value;

    -(id)initWithGlobalConfig;

    -(id)initWithCredential:(Credential*)credential
    sdkEnvironment:(SDKEnvironment*)sdkEnvironment;
    -(id)initWithCredential:(Credential*)credential;
    /**
    createRepository sync request
    @param createRepositoryRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createRepositoryResponse` the request response data model
    */
    -(NSDictionary*) createRepositorySyncWithRequest:(ContainerregistryCreateRepositoryRequest*) createRepositoryRequest;

    -(void)createRepositoryAsyncWithRequest:(ContainerregistryCreateRepositoryRequest*) createRepositoryRequest
    completionHandler:(void(^)(int statusCode,ContainerregistryCreateRepositoryResponse* _Nullable createRepositoryResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    checkRepositoryName sync request
    @param checkRepositoryNameRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `checkRepositoryNameResponse` the request response data model
    */
    -(NSDictionary*) checkRepositoryNameSyncWithRequest:(ContainerregistryCheckRepositoryNameRequest*) checkRepositoryNameRequest;

    -(void)checkRepositoryNameAsyncWithRequest:(ContainerregistryCheckRepositoryNameRequest*) checkRepositoryNameRequest
    completionHandler:(void(^)(int statusCode,ContainerregistryCheckRepositoryNameResponse* _Nullable checkRepositoryNameResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteRegistry sync request
    @param deleteRegistryRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteRegistryResponse` the request response data model
    */
    -(NSDictionary*) deleteRegistrySyncWithRequest:(ContainerregistryDeleteRegistryRequest*) deleteRegistryRequest;

    -(void)deleteRegistryAsyncWithRequest:(ContainerregistryDeleteRegistryRequest*) deleteRegistryRequest
    completionHandler:(void(^)(int statusCode,ContainerregistryDeleteRegistryResponse* _Nullable deleteRegistryResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteRepository sync request
    @param deleteRepositoryRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteRepositoryResponse` the request response data model
    */
    -(NSDictionary*) deleteRepositorySyncWithRequest:(ContainerregistryDeleteRepositoryRequest*) deleteRepositoryRequest;

    -(void)deleteRepositoryAsyncWithRequest:(ContainerregistryDeleteRepositoryRequest*) deleteRepositoryRequest
    completionHandler:(void(^)(int statusCode,ContainerregistryDeleteRepositoryResponse* _Nullable deleteRepositoryResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeQuotas sync request
    @param describeQuotasRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeQuotasResponse` the request response data model
    */
    -(NSDictionary*) describeQuotasSyncWithRequest:(ContainerregistryDescribeQuotasRequest*) describeQuotasRequest;

    -(void)describeQuotasAsyncWithRequest:(ContainerregistryDescribeQuotasRequest*) describeQuotasRequest
    completionHandler:(void(^)(int statusCode,ContainerregistryDescribeQuotasResponse* _Nullable describeQuotasResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeImages sync request
    @param describeImagesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeImagesResponse` the request response data model
    */
    -(NSDictionary*) describeImagesSyncWithRequest:(ContainerregistryDescribeImagesRequest*) describeImagesRequest;

    -(void)describeImagesAsyncWithRequest:(ContainerregistryDescribeImagesRequest*) describeImagesRequest
    completionHandler:(void(^)(int statusCode,ContainerregistryDescribeImagesResponse* _Nullable describeImagesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeRepositories sync request
    @param describeRepositoriesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeRepositoriesResponse` the request response data model
    */
    -(NSDictionary*) describeRepositoriesSyncWithRequest:(ContainerregistryDescribeRepositoriesRequest*) describeRepositoriesRequest;

    -(void)describeRepositoriesAsyncWithRequest:(ContainerregistryDescribeRepositoriesRequest*) describeRepositoriesRequest
    completionHandler:(void(^)(int statusCode,ContainerregistryDescribeRepositoriesResponse* _Nullable describeRepositoriesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeRegistry sync request
    @param describeRegistryRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeRegistryResponse` the request response data model
    */
    -(NSDictionary*) describeRegistrySyncWithRequest:(ContainerregistryDescribeRegistryRequest*) describeRegistryRequest;

    -(void)describeRegistryAsyncWithRequest:(ContainerregistryDescribeRegistryRequest*) describeRegistryRequest
    completionHandler:(void(^)(int statusCode,ContainerregistryDescribeRegistryResponse* _Nullable describeRegistryResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    checkRegistryName sync request
    @param checkRegistryNameRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `checkRegistryNameResponse` the request response data model
    */
    -(NSDictionary*) checkRegistryNameSyncWithRequest:(ContainerregistryCheckRegistryNameRequest*) checkRegistryNameRequest;

    -(void)checkRegistryNameAsyncWithRequest:(ContainerregistryCheckRegistryNameRequest*) checkRegistryNameRequest
    completionHandler:(void(^)(int statusCode,ContainerregistryCheckRegistryNameResponse* _Nullable checkRegistryNameResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    createRegistry sync request
    @param createRegistryRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `createRegistryResponse` the request response data model
    */
    -(NSDictionary*) createRegistrySyncWithRequest:(ContainerregistryCreateRegistryRequest*) createRegistryRequest;

    -(void)createRegistryAsyncWithRequest:(ContainerregistryCreateRegistryRequest*) createRegistryRequest
    completionHandler:(void(^)(int statusCode,ContainerregistryCreateRegistryResponse* _Nullable createRegistryResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    deleteImage sync request
    @param deleteImageRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `deleteImageResponse` the request response data model
    */
    -(NSDictionary*) deleteImageSyncWithRequest:(ContainerregistryDeleteImageRequest*) deleteImageRequest;

    -(void)deleteImageAsyncWithRequest:(ContainerregistryDeleteImageRequest*) deleteImageRequest
    completionHandler:(void(^)(int statusCode,ContainerregistryDeleteImageResponse* _Nullable deleteImageResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    getAuthorizationToken sync request
    @param getAuthorizationTokenRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `getAuthorizationTokenResponse` the request response data model
    */
    -(NSDictionary*) getAuthorizationTokenSyncWithRequest:(ContainerregistryGetAuthorizationTokenRequest*) getAuthorizationTokenRequest;

    -(void)getAuthorizationTokenAsyncWithRequest:(ContainerregistryGetAuthorizationTokenRequest*) getAuthorizationTokenRequest
    completionHandler:(void(^)(int statusCode,ContainerregistryGetAuthorizationTokenResponse* _Nullable getAuthorizationTokenResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeAuthorizationTokens sync request
    @param describeAuthorizationTokensRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeAuthorizationTokensResponse` the request response data model
    */
    -(NSDictionary*) describeAuthorizationTokensSyncWithRequest:(ContainerregistryDescribeAuthorizationTokensRequest*) describeAuthorizationTokensRequest;

    -(void)describeAuthorizationTokensAsyncWithRequest:(ContainerregistryDescribeAuthorizationTokensRequest*) describeAuthorizationTokensRequest
    completionHandler:(void(^)(int statusCode,ContainerregistryDescribeAuthorizationTokensResponse* _Nullable describeAuthorizationTokensResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    describeRegistries sync request
    @param describeRegistriesRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `describeRegistriesResponse` the request response data model
    */
    -(NSDictionary*) describeRegistriesSyncWithRequest:(ContainerregistryDescribeRegistriesRequest*) describeRegistriesRequest;

    -(void)describeRegistriesAsyncWithRequest:(ContainerregistryDescribeRegistriesRequest*) describeRegistriesRequest
    completionHandler:(void(^)(int statusCode,ContainerregistryDescribeRegistriesResponse* _Nullable describeRegistriesResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;
    /**
    releaseAuthorizationToken sync request
    @param releaseAuthorizationTokenRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
            `releaseAuthorizationTokenResponse` the request response data model
    */
    -(NSDictionary*) releaseAuthorizationTokenSyncWithRequest:(ContainerregistryReleaseAuthorizationTokenRequest*) releaseAuthorizationTokenRequest;

    -(void)releaseAuthorizationTokenAsyncWithRequest:(ContainerregistryReleaseAuthorizationTokenRequest*) releaseAuthorizationTokenRequest
    completionHandler:(void(^)(int statusCode,ContainerregistryReleaseAuthorizationTokenResponse* _Nullable releaseAuthorizationTokenResponse, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    /**
    containerregistry common sync request
    @param  jdcloudDataRequest request param
    @return key `statusCode` http request status code type is int
            `dataResult` the http request response data  type is NSData
            `requestError` the request error type is NSError
    */
    -(NSDictionary*) containerregistryCommonSyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                           url:(NSString*) url
                                        method:(NSString*) method;

    -(void)containerregistryCommonAsyncWithRequest:(JDCloudDataRequest*) jdcloudDataRequest
                                  url:(NSString*) url
                               method:(NSString*) method
                    completionHandler:(void(^)(int statusCode, NSData* _Nullable responseData,NSError * _Nullable error))completionHandler;

    @end


    #endif /* ContainerregistryClient_h */
